package main
import (
	"fmt"
	"flag"
)
//通过 flag包 来解析命令行参数~
//order.go 的获取命令行参数是比较原生的做法，对解析命令行参数不是特别的方便 例如 -u root -p asdasd123  -u/-p指定参数
//用flag包获取参数，可以随意调换顺序
func main(){
	//定义几个用于接收命令行参数值的变量
	var user string
	var pwd string
	var host string
	var port int
	//&user 就是用来接受用户命令行中输入的 -u 后面的参数值
	//"u" 就是 -u 指定参数
	//"" 就是默认值，目前为空
	//"用户名默认为空" 对这个参数的说明
	flag.StringVar(&user,"u","","用户名默认为空")
	flag.StringVar(&pwd,"pwd","","密码默认为空")
	flag.StringVar(&host,"h","localhost","主机默认为localhost")
	flag.IntVar(&port,"port",3306,"端口号默认为3306")
	/*
	对这种flag，默认值就是该变量的初始值。	
	在所有flag都注册之后，调用：
	flag.Parse()
	来解析命令行参数写入注册的flag里。
	*/
	flag.Parse()  //这条执行完之后才能真正获取到对应参数
	fmt.Println(user,"-",pwd,"-",host,"-",port)
	/*
	Usage of D:\goproject\src\go_code\project18\main\order2.exe:
	-h string
			主机默认为localhost (default "localhost")
	-port int
			端口号默认为3306 (default 3306)
	-pwd string
			密码默认为空
	-u string
			用户名默认为空
	PS D:\goproject\src\go_code\project18\main> .\order2.exe -u root -pwd 1233123 -port 8080
	root - 1233123 - localhost - 8080
	*/
}